"""列表视图示例模块

该模块演示了如何使用PySide6的QListView类创建列表视图，
并通过QStringListModel提供数据模型。
"""

import sys
from PySide6 import QtCore, QtWidgets

class MyWidget(QtWidgets.QWidget):
    """列表视图窗口类
    
    创建一个包含列表视图的简单窗口，演示模型-视图架构的使用。
    """
    
    def __init__(self):
        """初始化窗口组件和数据模型"""
        super().__init__()

        # 创建列表视图组件
        self.listView = QtWidgets.QListView()
        
        # 创建字符串列表模型
        self.listModel = QtCore.QStringListModel()
        self.list = ['测试列表 1', '测试列表 2', '测试列表 3']
        
        # 将字符串列表设置到模型中
        self.listModel.setStringList(self.list)
        
        # 将模型关联到列表视图
        self.listView.setModel(self.listModel)
        
        # 连接列表项点击信号到处理槽函数
        self.listView.clicked.connect(self.listClick)

        # 创建垂直布局管理器
        self.layout = QtWidgets.QVBoxLayout(self)
        self.layout.addWidget(self.listView)
        self.setLayout(self.layout)

    @QtCore.Slot()
    def listClick(self, item):
        """列表项点击事件处理槽函数
        
        当用户点击列表项时，显示一个消息框显示选中项的文本内容。
        
        Args:
            item: 被点击的列表项索引
        """
        QtWidgets.QMessageBox.information(
            self,
            '列表',
            self.list[item.row()]
        )


if __name__ == "__main__":
    # 创建应用程序实例
    app = QtWidgets.QApplication([])

    # 创建并显示窗口
    widget = MyWidget()
    widget.resize(500, 400)
    widget.show()

    # 运行应用程序事件循环
    sys.exit(app.exec())